home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-1.iso / games / wskat30a.zip / SETUP.MS_ / SETUP.bin
Text File  |  1995-10-15  |  12KB  |  402 lines

  1.  
  2. '' Setup-Anweisungen fⁿr WinSkat
  3.  
  4. '$INCLUDE 'setupapi.inc'
  5. '$INCLUDE 'msdetect.inc'
  6.  
  7. CONST ASKQUIT      = 200
  8. CONST DESTPATH     = 300
  9. CONST EXITFAILURE  = 400
  10. CONST EXITQUIT     = 600
  11. CONST EXITSUCCESS  = 700
  12. CONST APPHELP      = 900
  13. CONST CUSTINST     = 6200
  14. CONST TOOBIG       = 6300
  15. CONST BADPATH      = 6400
  16.  
  17. CONST LOGO         = 1
  18.  
  19. CONST APPFILES     = 1
  20. CONST OPTFILES1    = 2
  21. CONST OPTFILES2    = 3
  22. CONST OPTFILES3    = 4
  23. CONST OPTFILES4    = 5
  24.  
  25. CONST WM_FONTCHANGE = 29
  26. CONST HWND_BROADCAST = -1
  27.  
  28. GLOBAL DEST$
  29. GLOBAL WINDRIVE$
  30.  
  31. GLOBAL APPNEEDS$ 
  32. GLOBAL OPT1NEEDS$
  33. GLOBAL OPT2NEEDS$
  34. GLOBAL OPT3NEEDS$
  35. GLOBAL OPT4NEEDS$
  36. GLOBAL EXTRACOSTS$
  37. GLOBAL BIGLIST$ 
  38.  
  39. GLOBAL CHECKSTATES$
  40. GLOBAL STATUSTEXT$
  41. GLOBAL DRIVETEXT$
  42.  
  43. DECLARE SUB AddOptFilesToCopyList ( ftype% )
  44. DECLARE SUB RecalcOptFiles ( ftype% )
  45. DECLARE SUB RecalcPath
  46. DECLARE SUB SetDriveStatus
  47. DECLARE FUNCTION MakePath ( szDir$, szFile$ ) AS STRING
  48. DECLARE FUNCTION CreateScalableFontResource LIB "GDI.EXE" (fHidden%, FOTFile$, TTFFile$, SysDir$) AS INTEGER
  49. DECLARE FUNCTION AddFontResource LIB "GDI.EXE" (FOTFile$) AS INTEGER
  50. DECLARE FUNCTION SendMessage LIB "USER.EXE" (hWnd%, Message%, wParam%, lParam&) AS LONG
  51.  
  52.  
  53. INIT:
  54.     CUIDLL$ = "mscuistf.dll"
  55.     HELPPROC$ = "FHelpDlgProc"
  56.  
  57.     SetBitmap CUIDLL$, LOGO
  58.     SetTitle "Fischer - Setup"
  59.  
  60.     szInf$ = GetSymbolValue( "STF_SRCINFPATH" )
  61.     IF szInf$ = "" THEN
  62.         szInf$ = GetSymbolValue( "STF_CWDDIR" ) + "setup.inf"
  63.     END IF
  64.     ReadInfFile szInf$
  65.  
  66.     WINDRIVE$ = MID$( GetWindowsDir, 1, 1 )
  67.     DEST$ = "C:\SPIELE\WINSKAT"
  68.  
  69.     CHECKSTATES$ = "CheckItemsState"
  70.     STATUSTEXT$  = "StatusItemsText"
  71.     DRIVETEXT$   = "DriveStatusText"
  72.  
  73.     AddListItem CHECKSTATES$, "ON"
  74.     AddListItem CHECKSTATES$, "ON"
  75.     AddListItem CHECKSTATES$, "ON"
  76.     AddListItem CHECKSTATES$, "ON"
  77.     AddListItem CHECKSTATES$, "OFF"
  78.  
  79.     FOR i% = 1 TO 5 STEP 1
  80.         AddListItem STATUSTEXT$, ""
  81.     NEXT i%
  82.  
  83.     FOR i% = 1 TO 7 STEP 1
  84.         AddListItem DRIVETEXT$, ""
  85.     NEXT i%
  86.     ReplaceListItem DRIVETEXT$, 7, DEST$
  87.  
  88.     APPNEEDS$   = "AppNeeds"
  89.     OPT1NEEDS$  = "Opt1Needs"
  90.     OPT2NEEDS$  = "Opt2Needs"
  91.     OPT3NEEDS$  = "Opt3Needs"
  92.     OPT4NEEDS$  = "Opt4Needs"
  93.     EXTRACOSTS$ = "ExtraCosts"
  94.     BIGLIST$    = "BigList"
  95.  
  96.     FOR i% = 1 TO 5 STEP 1
  97.         AddListItem BIGLIST$, ""
  98.     NEXT i%
  99.  
  100.     FOR i% = 1 TO 26 STEP 1
  101.         AddListItem EXTRACOSTS$, "0"
  102.     NEXT i%
  103.  
  104.     RecalcPath
  105.  
  106.     SetDriveStatus
  107.  
  108. CUSTINST:
  109.     sz$ = UIStartDlg( CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$ )
  110.  
  111.     IF sz$ = "CONTINUE" THEN
  112.         FOR i% = 1 TO 5 STEP 1
  113.             IF GetListItem( BIGLIST$, i% ) <> "" THEN
  114.                 GOSUB TOOBIG
  115.                 GOTO CUSTINST
  116.             END IF
  117.         NEXT i%
  118.         IF GetListItem( CHECKSTATES$, APPFILES ) = "ON" THEN
  119.             MajorVer% = GetWindowsMajorVersion()
  120.             MinorVer% = GetWindowsMinorVersion()
  121.             Processor% = GetProcessorType()
  122.             IF MajorVer% < 3 OR ( MajorVer% = 3 AND MinorVer% < 10 ) THEN
  123.                 i% = DoMsgBox( "Skat fⁿr Windows ben÷tigt mindestens Microsoft Windows, Version 3.10!", "Fischer - Setup", MB_OK + MB_TASKMODAL + MB_ICONHAND )
  124.                 GOTO CUSTINST
  125.             END IF
  126.             IF Processor% < 3 THEN
  127.                 i% = DoMsgBox( "Skat fⁿr Windows ben÷tigt mindestens einen 386er - Prozessor!", "Fischer - Setup", MB_OK + MB_TASKMODAL + MB_ICONHAND )
  128.                 GOTO CUSTINST
  129.             END IF
  130.             IF GetListItem( CHECKSTATES$, OPTFILES1 ) = "OFF" THEN
  131.                 IF GetListItem( CHECKSTATES$, OPTFILES2 ) = "OFF" THEN
  132.                     i% = DoMsgBox( "Skat fⁿr Windows braucht auch Karten!", "Fischer - Setup", MB_OK + MB_TASKMODAL + MB_ICONHAND )
  133.                     GOTO CUSTINST
  134.                 END IF
  135.             END IF
  136.         END IF
  137.         UIPop 1
  138.         GOTO INSTALL
  139.     ELSEIF sz$ = "PATH" THEN
  140.         GOTO GETPATH
  141.     ELSEIF sz$ = "CHK1" THEN
  142.         RecalcOptFiles APPFILES
  143.         SetDriveStatus
  144.         GOTO CUSTINST
  145.     ELSEIF sz$ = "CHK2" THEN
  146.         RecalcOptFiles OPTFILES1
  147.         SetDriveStatus
  148.         GOTO CUSTINST
  149.     ELSEIF sz$ = "CHK3" THEN
  150.         RecalcOptFiles OPTFILES2
  151.         SetDriveStatus
  152.         GOTO CUSTINST
  153.     ELSEIF sz$ = "CHK4" THEN
  154.         RecalcOptFiles OPTFILES3
  155.         SetDriveStatus
  156.         GOTO CUSTINST
  157.     ELSEIF sz$ = "CHK5" THEN
  158.         RecalcOptFiles OPTFILES4
  159.         SetDriveStatus
  160.         GOTO CUSTINST
  161.     ELSEIF sz$ = "REACTIVATE" THEN
  162.         RecalcPath
  163.         SetDriveStatus
  164.         GOTO CUSTINST
  165.     ELSE
  166.         GOSUB ASKQUIT
  167.         GOTO CUSTINST
  168.     END IF
  169.  
  170. INSTALL:
  171.     ClearCopyList
  172.     AddOptFilesToCopyList APPFILES
  173.     AddOptFilesToCopyList OPTFILES1
  174.     AddOptFilesToCopyList OPTFILES2
  175.     AddOptFilesToCopyList OPTFILES3
  176.     AddOptFilesToCopyList OPTFILES4
  177.     CreateDir DEST$, cmoNone
  178.     CopyFilesInCopyList
  179.  
  180.     IF GetListItem( CHECKSTATES$, APPFILES ) = "ON" THEN
  181.         CreateProgmanItem "Spiele", "WinSkat", MakePath( DEST$, "wskat.exe" ), "", cmoOverwrite
  182.         CreateProgmanItem "Spiele", "WinSkat Hilfe", "winhelp.exe "+ MakePath( DEST$, "wskat.hlp" ), "", cmoOverwrite
  183.         CreateProgmanItem "Spiele", "WinSkat Tips", "notepad.exe "+ MakePath( DEST$, "tips.txt" ), "", cmoOverwrite
  184.  
  185.         SYSDIR$ = GetWindowsSysDir()
  186.         i% = CreateScalableFontResource ( 0, SYSDIR$ + "QUILLSCN.FOT", "QUILLSCN.TTF", SYSDIR$ )
  187.         i% = AddFontResource ( SYSDIR$ + "QUILLSCN.FOT" )
  188.         FontName$ = STRING$( 64, 32 )
  189.         i% = GetTypeFaceNameFromTTF( SYSDIR$ + "QUILLSCN.TTF", FontName$, 64 )
  190.         CreateIniKeyValue "WIN.INI", "fonts", FontName$ +" (TrueType)", "QUILLSCN.FOT", cmoOverwrite
  191.         i% = SendMessage ( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 )
  192.  
  193.     END IF
  194.  
  195.     IF GetListItem( CHECKSTATES$, OPTFILES4 ) = "ON" THEN
  196.         CreateProgmanItem "Spiele", "DosSkat", MakePath( DEST$, "dos\skat.pif" ), MakePath( DEST$, "dos\skat.ico" ), cmoOverwrite
  197.         CreateProgmanItem "Spiele", "DosSkat Anleitung", "notepad.exe "+ MakePath( DEST$, "dos\skat.anl" ), "", cmoOverwrite
  198.     END IF
  199.  
  200. QUIT:
  201.     ON ERROR GOTO ERRQUIT
  202.  
  203.     IF ERR = 0 THEN
  204.         dlg% = EXITSUCCESS
  205.     ELSEIF ERR = STFQUIT THEN
  206.         dlg% = EXITQUIT
  207.     ELSE
  208.         dlg% = EXITFAILURE
  209.     END IF
  210.  
  211. QUITL1:
  212.     sz$ = UIStartDlg( CUIDLL$, dlg%, "FInfo0DlgProc", 0, "" )
  213.     IF sz$ = "REACTIVATE" THEN
  214.         GOTO QUITL1
  215.     END IF
  216.     UIPop 1
  217.  
  218.     END
  219.  
  220. ERRQUIT:
  221.     i% = DoMsgBox( "Dieser Diskettensatz ist fehlerhaft!", "Fischer - Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND )
  222.     END
  223.  
  224. GETPATH:
  225.     SetSymbolValue "EditTextIn", DEST$
  226.     SetSymbolValue "EditFocus", "END"
  227.  
  228. GETPATHL1:
  229.     sz$ = UIStartDlg( CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$ )
  230.  
  231.     IF sz$ = "CONTINUE" THEN
  232.         olddest$ = DEST$
  233.         DEST$ = GetSymbolValue( "EditTextOut" )
  234.  
  235.         IF IsDirWritable( DEST$ ) = 0 THEN
  236.             GOSUB BADPATH
  237.             GOTO GETPATHL1
  238.         END IF
  239.         UIPop 1
  240.  
  241.         IF LEN( DEST$ ) > 23 THEN
  242.             ReplaceListItem DRIVETEXT$, 7, MID$( DEST$, 1, 23 )+"..."
  243.         ELSE
  244.             ReplaceListItem DRIVETEXT$, 7, DEST$
  245.         END IF
  246.  
  247.         IF ( olddest$ <> DEST$ ) AND ( olddest$ <> DEST$+"\" ) AND ( olddest$+"\" <> DEST$ ) THEN
  248.             RecalcPath
  249.             SetDriveStatus
  250.         END IF
  251.  
  252.         olddest$ = ""
  253.         GOTO CUSTINST
  254.     ELSEIF sz$ = "REACTIVATE" THEN
  255.         RecalcPath
  256.         SetDriveStatus
  257.         GOTO GETPATHL1
  258.     ELSEIF sz$ = "EXIT" THEN
  259.         GOSUB ASKQUIT
  260.         GOTO GETPATHL1
  261.     ELSE
  262.         UIPop 1
  263.         GOTO CUSTINST
  264.     END IF
  265.  
  266. TOOBIG:
  267.     sz$ = UIStartDlg( CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "" )
  268.     IF sz$ = "REACTIVATE" THEN
  269.         RecalcPath
  270.         SetDriveStatus
  271.         GOTO TOOBIG
  272.     END IF
  273.     UIPop 1
  274.     RETURN
  275.  
  276. BADPATH:
  277.     sz$ = UIStartDlg( CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "" )
  278.     IF sz$ = "REACTIVATE" THEN
  279.         RecalcPath
  280.         SetDriveStatus
  281.         GOTO BADPATH
  282.     END IF
  283.     UIPop 1
  284.     RETURN
  285.  
  286. ASKQUIT:
  287.     sz$ = UIStartDlg( CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "" )
  288.  
  289.     IF sz$ = "EXIT" THEN
  290.         UIPopAll
  291.         ERROR STFQUIT
  292.     ELSEIF sz$ = "REACTIVATE" THEN
  293.         GOTO ASKQUIT
  294.     ELSE
  295.         UIPop 1
  296.     END IF
  297.     RETURN
  298.  
  299. SUB AddOptFilesToCopyList ( ftype% ) STATIC
  300.  
  301.     IF GetListItem( CHECKSTATES$, ftype% ) = "ON" THEN
  302.         SrcDir$ = GetSymbolValue( "STF_SRCDIR" )
  303.         IF ftype% = APPFILES THEN
  304.             AddSectionFilesToCopyList "REMOVE", SrcDir$, GetWindowsDir()
  305.             AddSectionFilesToCopyList "WSkat", SrcDir$, DEST$
  306.             AddSectionFilesToCopyList "SKS", SrcDir$, MakePath( DEST$, "SKS" )
  307.             AddSectionFilesToCopyList "WIN", SrcDir$, GetWindowsDir()
  308.             AddSectionFilesToCopyList "SYS", SrcDir$, GetWindowsSysDir()
  309.         ELSEIF ftype% = OPTFILES1 THEN
  310.             AddSectionFilesToCopyList "DKarten", SrcDir$, DEST$
  311.         ELSEIF ftype% = OPTFILES2 THEN
  312.             AddSectionFilesToCopyList "FKarten", SrcDir$, DEST$
  313.         ELSEIF ftype% = OPTFILES3 THEN
  314.             AddSectionFilesToCopyList "WAV", SrcDir$, MakePath( DEST$, "WAV" )
  315.         ELSEIF ftype% = OPTFILES4 THEN
  316.             AddSectionFilesToCopyList "DOS", SrcDir$, MakePath( DEST$, "DOS" )
  317.         END IF
  318.         SrcDir$ = ""
  319.     END IF
  320. END SUB
  321.  
  322. SUB RecalcOptFiles ( ftype% ) STATIC
  323.     CursorSave% = ShowWaitCursor(  )
  324.     ClearCopyList
  325.     AddOptFilesToCopyList ftype%
  326.  
  327.     fExtra% = 0
  328.     IF ftype% = APPFILES THEN
  329.         ListSym$ = APPNEEDS$
  330.         IF GetListItem( CHECKSTATES$, APPFILES ) = "ON" THEN
  331.             ndrive% = ASC( ucase$( WINDRIVE$ ) ) - ASC( "A" ) + 1
  332.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  333.             fExtra% = 1
  334.         END IF
  335.     ELSEIF ftype% = OPTFILES1 THEN
  336.         ListSym$ = OPT1NEEDS$
  337.     ELSEIF ftype% = OPTFILES2 THEN
  338.         ListSym$ = OPT2NEEDS$
  339.     ELSEIF ftype% = OPTFILES3 THEN
  340.         ListSym$ = OPT3NEEDS$
  341.     ELSEIF ftype% = OPTFILES4 THEN
  342.         ListSym$ = OPT4NEEDS$
  343.     END IF
  344.  
  345.     StillNeed& = GetCopyListCost( EXTRACOSTS$, ListSym$, "" )
  346.  
  347.     cost& = 0
  348.     FOR i% = 1 TO 26 STEP 1
  349.         cost&  = cost& + VAL( GetListItem( ListSym$, i% ) )
  350.     NEXT i%
  351.     ReplaceListItem STATUSTEXT$, ftype%, STR$( cost& / 1024 ) + " K"
  352.  
  353.     IF StillNeed& > 0 THEN
  354.         ReplaceListItem BIGLIST$, ftype%, "YES"
  355.     ELSE
  356.         ReplaceListItem BIGLIST$, ftype%, ""
  357.     END IF
  358.  
  359.     IF fExtra% THEN
  360.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  361.     END IF
  362.     RestoreCursor CursorSave%
  363.     ListSym$ = ""
  364. END SUB
  365.  
  366. SUB RecalcPath STATIC
  367.  
  368.     CursorSave% = ShowWaitCursor(  )
  369.  
  370.     RecalcOptFiles APPFILES
  371.     RecalcOptFiles OPTFILES1
  372.     RecalcOptFiles OPTFILES2
  373.     RecalcOptFiles OPTFILES3
  374.     RecalcOptFiles OPTFILES4
  375.  
  376.     RestoreCursor CursorSave%
  377. END SUB
  378.  
  379. SUB SetDriveStatus STATIC
  380.  
  381.     drive$ = MID$( DEST$, 1, 1 )
  382.     ndrive% = ASC( ucase$( drive$ ) ) - ASC( "A" ) + 1
  383.     cost& = VAL( GetListItem( APPNEEDS$, ndrive% ) ) + VAL( GetListItem( OPT1NEEDS$, ndrive% ) ) + VAL( GetListItem( OPT2NEEDS$, ndrive% ) ) + VAL( GetListItem( OPT3NEEDS$, ndrive% ) ) + VAL( GetListItem( OPT4NEEDS$, ndrive% ) )
  384.     free& = GetFreeSpaceForDrive( drive$ )
  385.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  386.     ReplaceListItem DRIVETEXT$, 2, STR$( cost& / 1024 ) + " K"
  387.     ReplaceListItem DRIVETEXT$, 3, STR$( free& / 1024 ) + " K"
  388.  
  389. END SUB
  390.  
  391. FUNCTION MakePath ( szDir$, szFile$ ) STATIC AS STRING
  392.     IF szDir$ = "" THEN
  393.         MakePath = szFile$
  394.     ELSEIF szFile$ = "" THEN
  395.         MakePath = szDir$
  396.     ELSEIF MID$( szDir$, LEN( szDir$ ), 1 ) = "\" THEN
  397.         MakePath = szDir$ + szFile$
  398.     ELSE
  399.         MakePath = szDir$ + "\" + szFile$
  400.     END IF
  401. END FUNCTION
  402.